package com.ds.infra.rpc.core.transport.client;

import com.ds.infra.rpc.core.protocol.RpcProtocol;
import com.ds.infra.rpc.core.protocol.RpcRequest;
import com.ds.infra.rpc.core.protocol.RpcResponse;

import java.util.concurrent.CompletableFuture;

/**
 * RPC客户端通信接口
 * 职责：建立连接、发送请求、管理连接池
 *
 * @author WeiShaoying
 */
public interface RpcClient {

    /**
     * 发送RPC请求（异步）
     *
     * @param protocol 完整的RPC协议包
     * @return CompletableFuture包装的响应
     */
    CompletableFuture<RpcResponse> send(RpcProtocol<RpcRequest> protocol);

    /**
     * 关闭客户端资源
     */
    void shutdown();
}
